import axios from 'axios'
import { Notify } from 'vant';
import store from '@/store'
// import {
//   getToken,
//   GetTokenExpire
// } from '@/utils/auth'

//import { refreshToken } from "@/api/login";
// 创建一个axios实例
const service = axios.create({
  baseURL: '/',
  // url = base url + request url
  // withCredentials: true, // 当跨域请求时发送cookie
  // 请求超时
  timeout: 60000,
  headers: {
    'Content-Type': 'application/json'
    //'Content-Type': 'application/x-www-form-urlencoded'
  },
})

// 请求拦截器
service.interceptors.request.use(
  config => {
    
    // 在发送请求之前做判断
    // if (store.getters.token) {
    //   // 让每个请求携带token
    //   // ['Authorization'] = "Bearer " 是一个自定义头
    //   //config.headers['Authorization'] = "Bearer " + getToken()
    // }
    return config
  },
  error => {
    // 处理请求错误
    return Promise.reject(error)
  }
)

// 响应拦截器
service.interceptors.response.use(
  response => {
    const res = response.data
    // 如果自定义代码不是200等，则判断为错误。
    if (response.status != 200 || res.error_code || !res) {
      Notify({ type: 'danger', message: res.error || res.message || 'Error' });
      
      return Promise.reject(new Error(res.error || 'Error'))
    } else {
      return res
    }
  },
  error => {
    // 超时请求处理
    var originalRequest = error.config;
    if (error.code == 'ECONNABORTED' && error.message.indexOf('timeout') != -1 && !originalRequest._retry) {
      Notify({ type: 'danger', message:'请求超时！' });
      originalRequest._retry = true
      return null;
    }
    if (error.response) {
      if (error.response.status == 401) {
        var curTime = new Date()
        var Expire=window.localStorage.getItem('TokenExpire')
        var tokenExpire = new Date(Date.parse(Expire))
        // 在用户操作的活跃期内
        if ((curTime >= tokenExpire)) {
          store.dispatch('user/logout')
          window.location.reload()
          return null;
        } else {
          // 返回 401，并且不知用户操作活跃期内 清除token信息并跳转到登录页面
          store.dispatch('user/logout')
          window.location.reload()
          return null;
        }

      }
      // 403 无权限
      
      // if (error.response.status == 400) {
      //   store.dispatch('user/logout')
      //   window.location.reload()
      //   return null;
      // }
      // 500 服务器异常
      if (error.response.status == 500) {
        Notify({ type: 'danger', message: '连接服务器异常，请检查服务端是否正常！' });
        // store.dispatch('user/logout')
        // window.location.reload()
        return null;
      }
    }
    console.log('err' + error) // for debug
    
    return ""
  }
)

export default service